#!/bin/bash
# build_osip2.sh - 编译 libosip2 为 Android armeabi-v7a
# 作者：Pengxh
# 在 WSL 中运行：bash build_osip2.sh

# 设置路径（请根据实际情况修改）
SOURCE_DIR="$(pwd)"
NDK_DIR="/home/vm/android-ndk-r21d"          # 确保这是 Linux 版 NDK 路径
BUILD_DIR="$SOURCE_DIR/build-android-armeabi-v7a"
INSTALL_DIR="$SOURCE_DIR/install-android-armeabi-v7a"

# 检查源码目录
if [ ! -d "$SOURCE_DIR" ]; then
    echo "错误：源码目录不存在！$SOURCE_DIR"
    exit 1
fi

# 检查 NDK 目录
if [ ! -d "$NDK_DIR" ]; then
    echo "错误：NDK 目录不存在！$NDK_DIR"
    echo "请确认你安装的是 Linux 版 NDK，例如 android-ndk-r21d-linux-x86_64.zip"
    exit 1
fi

# 检查 configure 脚本
if [ ! -f "$SOURCE_DIR/configure" ]; then
    echo "错误：找不到 configure 脚本！请确认解压正确。"
    exit 1
fi

# 创建构建和安装目录
mkdir -p "$BUILD_DIR"
mkdir -p "$INSTALL_DIR"

echo "正在进入源码目录..."
cd "$SOURCE_DIR" || exit 1

# 设置 Android 编译参数
ANDROID_API=26
TOOLCHAIN_DIR="$NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64"
CC="$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$ANDROID_API-clang"
CXX="$TOOLCHAIN_DIR/bin/armv7a-linux-androideabi$ANDROID_API-clang++"
CFLAGS="-fPIC -DANDROID -D__ANDROID_API__=$ANDROID_API"
CXXFLAGS="$CFLAGS"
LDFLAGS="-llog"
HOST="armv7a-linux-androideabi"

echo "正在配置编译环境..."
echo "使用编译器: $CC"

# 检查编译器是否存在
if [ ! -f "$CC" ]; then
    echo "❌ 编译器不存在：$CC"
    echo "请检查 NDK 路径和版本是否正确"
    echo "建议使用 NDK r21d 或 r25b"
    exit 1
fi

# 进入构建目录
cd "$BUILD_DIR" || exit 1

# 运行 configure
"$SOURCE_DIR/configure" \
    --host=$HOST \
    --build=x86_64-pc-linux-gnu \
    --target=$HOST \
    --prefix="$INSTALL_DIR" \
    --enable-shared \
    --disable-static \
    --disable-dependency-tracking \
    CC="$CC" \
    CXX="$CXX" \
    CFLAGS="$CFLAGS" \
    CXXFLAGS="$CXXFLAGS" \
    LDFLAGS="$LDFLAGS" \
    PKG_CONFIG_PATH=""  # 避免干扰

if [ $? -ne 0 ]; then
    echo "❌ configure 失败！请检查错误信息。"
    echo "请确认："
    echo "1. NDK 路径正确"
    echo "2. 编译器文件存在: $CC"
    echo "3. 使用的是 Linux 版 NDK"
    exit 1
fi

echo "正在编译 libosip2..."
make -j$(nproc)

if [ $? -ne 0 ]; then
    echo "❌ 编译失败！"
    exit 1
fi

echo "正在安装到 $INSTALL_DIR ..."
make install

echo ""
echo "🎉 编译成功！"
echo ""
echo "生成的库文件："
echo "$INSTALL_DIR/lib/libosip2.so"
echo ""
echo "头文件："
echo "$INSTALL_DIR/include/osip2/"
echo ""
echo "你可以将 libosip2.so 用于 Android JNI 开发。"